<?php
namespace mytp;

// Request 类负责获取请求信息, 像是表单 GET/POST 方式传输的数据
class Request {

  protected $pathinfo;

  public function pathinfo(){
    // 判断一下是否存在
    if(is_null($this->pathinfo)){
      $this->pathinfo = trim($this->server('PATH_INFO', ''), '/');
    }
    return $this->pathinfo;
  }

  public function server($name, $default = null){
    return isset($_SERVER[$name]) ? $_SERVER[$name] : $default;
  }

  // 如果不传入索引值, 则返回整个内容
  public function post($name = null, $default = null){
    // 解析 post 方式传递过来的 json数据
    $post = (array)json_decode(file_get_contents('php://input'), true);
    $result = empty($post) ? null : $post;
    if($name == null) {
      return $result;
    }
    return isset($result[$name]) ? $result[$name] : $default;
  }
  
  public function get($name = null, $default = null){
    if($name == null) {
      return $_GET;
    }
    return isset($_GET[$name]) ? $_GET[$name] : $default;
  }

  // 判断当前是否有文件上传
  public function hasFile($name) {
    return isset($_FILES[$name]['error']) &&
    $_FILES[$name]['error'] != UPLOAD_ERR_NO_FILE;
  }

  // 获取文件信息
  public function file($name) {
    $file = isset($_FILES[$name]) ? $_FILES[$name] : [];
    return Upload::create($file);
  }
}
?>